import Vue from 'vue'
import Vuex from 'vuex'
import { getToken, setToken, removeToken } from '../utils/auth'
// 导入获取用户信息的接口
import { getProfileApi } from '@/api'
Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
    token: getToken() || {},
    userInfo: {}
  },
  mutations: {
    changeToken (state, token) {
      // 将 token 保存到 localstorage 和 vuex 中
      setToken(token)
      state.token = token
    },
    // 清除token
    delToken (state) {
      // 将 token 从 localstorage 和 vuex 中清除
      removeToken()
      state.token = {}
    },
    // 给 userInfo 赋值
    setUserInfo (state, info) {
      state.userInfo = info
    },
    // 清除userInfo
    delUserInfo (state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 获得用户信息
    async getUserInfo (context) {
      // 判断是否存在用户信息
      if (!context.state.userInfo.name) {
        const res = await getProfileApi()
        context.commit('setUserInfo', res.data.data)
      }
    }
  }
})
export default store
